//package com.ruoyi.api.controller;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import org.springframework.messaging.handler.annotation.MessageMapping;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.socket.TextMessage;
//import org.springframework.web.socket.WebSocketSession;
//
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//@Controller
//public class SignalingController {
//
//    private static final List<String> FIXED_USERS = Arrays.asList("user1", "user2", "user3", "user4", "user5");
//    private static final String FIXED_ROOM = "room1";
//
//    @MessageMapping("/api/signal")
//    public void handleSignal(SignalMessage signalMessage) {
//        String type = signalMessage.getType();
//        String from = signalMessage.getFrom();
//        String room = signalMessage.getRoom();
//
//        if (!FIXED_ROOM.equals(room)) {
//            return;
//        }
//
//        switch (type) {
//            case "offer":
//                handleOffer(signalMessage);
//                break;
//            case "answer":
//                handleAnswer(signalMessage);
//                break;
//            case "candidate":
//                handleCandidate(signalMessage);
//                break;
//            default:
//                // 未知的消息类型
//                break;
//        }
//    }
//
//    private void handleOffer(SignalMessage signalMessage) {
//        List<String> otherUsers = FIXED_USERS.stream()
//                .filter(user -> !user.equals(signalMessage.getFrom()))
//                .collect(Collectors.toList());
//        broadcastMessage(otherUsers, signalMessage);
//    }
//
//    private void handleAnswer(SignalMessage signalMessage) {
//        // 处理answer逻辑
//        String to = signalMessage.getTo();
//        sendMessageToUser(to, signalMessage);
//    }
//
//    private void handleCandidate(SignalMessage signalMessage) {
//        // 处理candidate逻辑
//        String to = signalMessage.getTo();
//        sendMessageToUser(to, signalMessage);
//    }
//
//    private void broadcastMessage(List<String> users, SignalMessage message) {
//        for (String user : users) {
//            sendMessageToUser(user, message);
//        }
//    }
//
//    private Map<String, WebSocketSession> sessions = new HashMap<>();
//
//    private void sendMessageToUser(String username, SignalMessage message) {
//        WebSocketSession session = sessions.get(username);
//        if (session != null && session.isOpen()) {
//            try {
//                session.sendMessage(new TextMessage(new ObjectMapper().writeValueAsString(message)));
//            } catch (Exception e) {
//                // 处理错误
//            }
//        }
//    }
//
//}
